package com.tbit.manager.api.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.tbit.common.group.DefaultGroupA;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Future;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 用户DTO
 *
 * @since 2024/12/3
 */
@Data
public class CouponUserDTO extends UserLoginInfo{
    /**
     * 主键id
     */
    private Integer couponuserId;
    /**
     * 优惠券id
     */
    @NotNull(groups = {DefaultGroupA.class})
    private Integer couponId;
    /**
     * 区域id
     */
    private Integer accountId;
    /**
     * 用户id
     */
    @NotNull(groups = {DefaultGroupA.class})
    private Integer userId;
    /**
     * 领取时间
     */
    private String recTime;
    /**
     * 是否使用
     */
    private Integer isUse;
    /**
     * 使用时间
     */
    private String useTime;
    /**
     * 到期时间
     */
    private String expireTime;
    /**
     * 是否失效
     */
    private Integer isValid;
    /**
     * 代理名称
     */
    private String accountName;
    /**
     * 手机号码
     */
    private String phone;
    /**
     * 优惠券名称
     */
    private String name;
    /**
     * 订单号
     */
    private String orderNO;

    /**
     * 数量
     */
    @Max(value = 1000, message = "优惠券数量不能超过1000", groups = {DefaultGroupA.class})
    @Min(value = 1, message = "优惠券数量不能小于1", groups = {DefaultGroupA.class})
    @NotNull(groups = {DefaultGroupA.class})
    private Integer num;
    /**
     * 过期时间
     */
    @NotNull(groups = {DefaultGroupA.class})
    @Future(message = "优惠劵失效时间不能小于今天", groups = {DefaultGroupA.class})
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
    /**
     * 是否发送短信
     */
    private Boolean sendMessag;
}
